package com.dkd.day20250723;

import java.util.ArrayList;
import java.util.Scanner;

public class Main36 {
    public static void main(String[] args) {
        //Excel工作表中对选定区域的数值进行统计的功能非常实用。
        //
        //仿照Excel的这个功能，请对给定表格中选中区域中的单元格进行求和统计，并输出统计结果。
        //
        //为简化计算，假设当前输入中每个单元格内容仅为数字或公式两种。
        //
        //如果为数字，则是一个非负整数，形如3、77
        //
        //如果为公式，则固定以=开头，且仅包含下面三种情况：
        //
        //等于某单元格的值，例如=B12
        //两个单元格的双目运算（仅为+或-），形如=C1-C2、C3+B2
        //单元格和数字的双目运算（仅为+或-），形如=B1+1、100-B2
        //注意：
        //
        //公式内容都是合法的，例如不存在，=C+1、=C1-C2+B3,=5、=3+5
        //不存在循环引用，例如A1=B1+C1、C1=A1+B2
        //内容中不存在空格、括号


        //数据输入没问题
        Scanner sc = new Scanner(System.in);
           int N = sc.nextInt();
          int M = sc.nextInt();
        String[][] arr = new String[N][M];
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                arr[i][j] = sc.next();
            }
        }

        String s = sc.next();


       solve(N, M, arr, s);
    }

    public static void solve(int N, int M, String[][] arr,String s) {
        int[][] number = new int[N][M];
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                if (!arr[i][j].startsWith("=")) {
                    number[i][j] = Integer.parseInt(arr[i][j]);

                }
            }
        }
//

        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                if (arr[i][j].startsWith("=")) {
                    number[i][j] = solve2(number,arr[i][j]);
                }
            }
        }



        String[] strings = s.split(":");


        int [] index1 =getIndex(strings[0]) ;// 1 1 -> 1 3 N-1-1
        int [] index2 =getIndex(strings[1]) ;//2 3->2 1 N-3-1



        int sum = 0;


        for (int i = index1[0]; i <= index2[0]; i++) {
            for (int j =N- index1[1]-1; j >=N- index2[1]-1; j--) {
                sum += number[j][i];
            }
        }

        System.out.println(sum);

    }


    public static int solve2( int[][] number,String str) {
        StringBuilder sb = new StringBuilder();
        ArrayList<String> list = new ArrayList<>();
        
        for (int i = 1; i < str.length(); i++) {
            char c = str.charAt(i);
            if(c == '+' || c == '-' ) {
                list.add(sb.toString());
                sb.setLength(0);
                list.add(c + "");
                continue;
            }
            sb.append(c);
            if(i==str.length()-1) {
                list.add(sb.toString());
            }

        }
        int ans = 0;
        if(list.size()==1) {
            String s = list.get(0);
            ans=getNum(s,number);

        }else{
            String s1 = list.get(0);
            String fuhao = list.get(1);
            String s2 = list.get(2);
            int number1 = getNum(s1,number);
            int number2 = getNum(s2,number);
            if(fuhao.equals("+")) {
                ans = number1 + number2;
            }else if(fuhao.equals("-")) {
                ans = number1 - number2;
            }

        }
        return ans;
    }

    public static int getNum(String str,int[][] arr) {
        char ch = str.charAt(0);
        if(ch>='A' && ch<='Z') {
            int i =ch-'A';
            int j =Integer.parseInt(str.substring(1))-1;
            return arr[j][i];
        }
        return Integer.parseInt(str);
    }

    public static int[] getIndex(String str) {
        char ch = str.charAt(0);

            int i =ch-'A';
            int j =Integer.parseInt(str.substring(1));
        return new int[]{i,j};
    }


}
